﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EnumUtils;
using EnumUtils.Extensions;
using EnumUtilsTests;
using EnumUtilsTests.Extensions;
using EnumUtilsTests.TestingEnums;


namespace TestingGrounds
{
  internal class Program
  {
    static int Main( string[] args ) {
      var testInstance = new FlagEnumUtilitiesTests();
      //uint executionCount = 0U;
      //testInstance.OperationExecuted += 
      //  delegate( bool operationExecuted ) { 
      //                                       string operationExecutionResultString = ((operationExecuted) ? "succeeded" : "failed"); 
      //                                       Console.WriteLine("Operation {0}", operationExecutionResultString);
      //                                       ++executionCount;
      //                                     };
      //testInstance.ForeachEnumFlagDoesOperationExecuteOnEnumFlagsTest();
      //Console.Write("\n\n");
      //Console.WriteLine("Total number of times operation was executed: {0}", executionCount);
      //testInstance.DoesEnumHaveFlagsAttributeNullEnumTest();

      //GoodFlagEnum testEnum = GoodFlagEnum.f3;
      //Enum testEnum = GoodFlagEnum.f3;
      //testEnum = testEnum.BitShiftLeft(2);

      object enumInABox = GoodFlagEnum.f3;
      FlagEnumUtilities.BitShiftLeft(enumInABox, 2);
      
        // RJM: This is a good test. Codify it in the Test suite.
//TODO: Add the above test into the test suite.
      
      Console.WriteLine("Press any key to terminate...");
      Console.ReadKey(true);
      return 0;
    }
  }
}
